home *** CD-ROM | disk | FTP | other *** search
- ┌──────────────────────────────────────────────────────────────────────────┐
- │┌────────────────────────────────────────────────────────────────────────┐│
- ││ ││
- ││ Yuvarlak Köƒe ■ VESA kartlarì II ││
- ││ ││
- │└────────────────────────────────────────────────────────────────────────┘│
- │ PS 26 · Eylül'95 Alex PAMIR │
- └──────────────────────────────────────────────────────────────────────────┘
-
-
-
- ÿyi günler sevgili Yuvarlak Köƒe okurlarì. Alemin en matrak
- köƒelerinden biri olan yuvarlak köƒe bu ay da sizlerle.
- Bu ay geçen aydan kalan VESA konusunu incelemeye devam edeceºiz.
-
-
- Geçen ay gördüºümüz kadarìyla artìk bilgisayarìmìzdaki Super VGA
- kartìnìn VESA uyumunu ve desteklediºi modlarì tesbit etmeyi öºrendik.
- Bu ay da bu modlarda ekrana nasìl eriƒeceºimizi örnekli bir ƒekilde
- göreceºiz. Listemizdeki ekran modlarìndan istediºimiz birini seçtiºimizde,
- ekranì bu mod'da açmadan önce kontrol etmemiz gereken bir nokta daha var.
- Bu da monitörümüzün bu ekran modunu gösterip göstermeyeceºidir.
- Aslìnda bunu bilgisayarì alìrken satìcìnìn bize verdiºi bilgiden yahut
- monitörün kullanìm kìlavuzundan öºrenebiliriz ama bu bilgilere ben pek
- güvenmem. Bunu yazìlìm olarak anlamanìn yolu ise programìmìzdaki
- modbuf.modeflag baytìnìn diºer bir bitini kontrol etmekle olur (0.bit).
- Bu kontrol yapìldìktan sonra VESA BIOS'unun 02H numaralì fonksiyonunu
- çaºìrarak istediºimiz modda ekranì açabiliriz.
-
- ┌──────────────────────────────────────────────────────────────────────╖
- │ Interrupt 10h Function 4Fh ║
- │ ║
- │ AH : 4Fh ║
- │ AL : 02h ║
- │ BX : istenen modun numarasì (15. biti 1 olursa Video RAM'de ║
- │ eskiden bulunan grafik datasì silinmez) ║
- ╘══════════════════════════════════════════════════════════════════════╝
-
- Modu açtìktan sonra mutlaka bunu test etmemiz gerekir. Bunu da ya interrupt
- dönüƒü AH'a ve AL'a bakarak yapabiliriz, ki AH'da 00h ve AL'da 4Fh varsa
- tamam demektir; veya VESA BIOS'un 03h numaralì fonksiyonunu kullarak
- ekranìn ƒu anki modunu öºrenip bizim istediºimizle karƒìlaƒtìrìrìz.
- 03h fonksiyonu ƒöyledir:
-
- ┌────────────────────────────────────────────────────────────────────────╖
- │ Interrupt 10h Function 4Fh ║
- │ AH : 4Fh ║
- │ AL : 03h ║
- │ ║
- │ Dönüƒte: ║
- │ BX : istenen modun numarasì ║
- │ ║
- ╘════════════════════════════════════════════════════════════════════════╝
-
- Modumuz artìk hazìr olduºuna göre artìk tek yapmamìz gereken ekran
- hafìzasìna bilgi yazìp bunu ekranda görmek. Fakat kazìn ayaºi... pardon
- VESA'nìn hafìzasì öyle deºil. Bildiºiniz gibi SVGA kartlarìnìn 2MB, 4MB
- gibi 256 KB 'dan daha büyük hafìzalarì olabiliyor. Fakat bizim hafìzada
- ekranì adresleyebildiºimiz bölge sadece A000:0000'dan B000:0000'a kadar olan
- 64KB'lìk bölge. Ekran büyüklüºü 64KB'dan az hafìza gerektiren modlar için
- fazla bir sorun yok. En fazla sayfa deºiƒtirme problemi çìkabilir. Fakat
- 640x480x256 gibi büyük modlar için biz ne yapacaºìz. Bunun çözümü, bizim
- 64KB'lìk bölgeyi ekran hafìzasìna karƒìlìklì iliƒkilendirmek. Böylece biz
- bilgisayara, ben kendi hafìza bölgemi ekran hafìzasìnìn ƒu ƒu bölgesi
- olarak kullanmak istiyorum dedikten sonra o bölgeyi kullanmakla sorun
- hallediliyor. Buna "page framing" adì veriliyor ve özellikle EMS hafìza
- adreslemesinde kullanìlìyor. Bu sistemin tek dezavantajì tek komutta en
- fazla çerçevemiz kadar bilgi gönderebilmemiz. Bu yüzden 64K'dan büyük
- ekranlar ancak birkaç seferde çizilebiliyor. VESA'da bu çerçeveye "Access
- window" yani eriƒim penceresi deniyor. Bu eriƒim penceresini kullanmak
- için ise 05h numaralì alt fonksiyon kullanìlìyor. Kullanìmdaki bir önemli
- özellik de pencerenin hareket oranì. Bu oranìn katlarì olarak belirlenen
- adres deºiƒikliºiyle pencerenin Video RAM'daki yeri belirleniyor.
- Yani eºer oran 1K ise DX registerìna konulan 128 deºeri ekran hafìzasìnìn
- 128K'dan baƒlamasì gerektiºi anlamìna geliyor. Bir de bazì kartlarda iki
- eriƒim penceresi olabiliyor; biri yazmak diºeri okumak için. O an yapìlacak
- iƒleme göre o numaralì pencerenin yerinin deºiƒmesi gerekir. Hangi
- pencerenin ne iƒe yaradìºì da o pencerenin pencere bilgileri word'ünün
- bitlerine bakìlarak anlaƒìlìr. 0. bit, pencerenin olup olmadìºìnì (1= var),
- 1. bit okunabilir olup olmadìºìnì (1=okunabilir), 2. bit yazìlabilir olup
- olmadìºìnì (1=yazìlabilir) gösterir. Deºerler ƒöyle:
-
- ┌──────────────────────────────────────────────────────────────────────────╖
- │ ║
- │ Interrupt 10h Function 4Fh ║
- │ ║
- │ AH : 4Fh ║
- │ AL : 05h ║
- │ BH : 00h ║
- │ BL : eriƒim penceresi numarasì (0 veya 1) ║
- │ DX : eriƒim bölgesi adresi (hareket orani ile çarìlìp asìl degeri ║
- │ oluƒturur) ║
- ╘══════════════════════════════════════════════════════════════════════════╝
-
- Elimizdeki bu bilgilerle VESA modundaki bir SVGA karta nasìl eriƒim
- yapìlacaºìnì geçen ayki örneºin geliƒtirilmiƒi olan bu ayki örnekte
- görebilirsiniz.
-
- Gelecek ay buluƒuncaya kadar size iyi programlamalar.